Page({
  data: {
    option1: [
      { text: '全部药品', value: 0 },
      { text: '有货药品', value: 1 }
    ],
    option2: [
      { text: '默认排序', value: 'a' },
      { text: '库存排序', value: 'b' }
    ],
    value1: 0,
    value2: 'a',
    items: [],
    cartCount: 0, // 购物车中商品的总数量
    cartItems: {}, // 购物车中每个商品的数量
    remark: '', // 备注信息
    isRemarkModalOpen: false, // 是否显示备注框
    cartItemsDisplay: '', // 购物车中商品的显示格式
    attentionItems: {}, // 记录需要补货的商品，key为_id，value为true表示已添加过补货信息
  },
  
  onLoad: function() {
    this.getInventoryData();
  },
  getInventoryData: function() {
    const db = wx.cloud.database();
    db.collection('inventory').get({
      success: res => {
        console.log(res.data);
        const items = res.data.map(item => {
          // 初始化 attentionItems，根据 hasRequestedAttention 字段
          this.data.attentionItems[item._id] = item.hasRequestedAttention || false;
          return item;
        });
        this.setData({
          items,
          attentionItems: this.data.attentionItems
        });
      },
      fail: err => {
        console.error(err);
      }
    });
  },
  handleIncrement: function(e) {
    const _id = e.currentTarget.dataset.id;
    const itemIndex = this.data.items.findIndex(item => item._id === _id);
    if (itemIndex !== -1) {
      const cartItem = this.data.cartItems[_id] || 0;
      if (cartItem < this.data.items[itemIndex].num) { // 检查库存是否满足购物车需求
        this.setData({
          cartCount: this.data.cartCount + 1,
          cartItems: {
             ...this.data.cartItems,
             [_id]: cartItem + 1
           }
        });
      } else {
        wx.showToast({
          title: '库存不足',
          icon: 'none'
        });
      }
    }
  },
  handleDecrement: function(e) {
    const _id = e.currentTarget.dataset.id;
    const itemIndex = this.data.items.findIndex(item => item._id === _id);
    if (itemIndex !== -1) {
      const cartItem = this.data.cartItems[_id] || 0;
      if (cartItem > 0) { // 检查是否有商品在购物车中
        this.setData({
          cartCount: this.data.cartCount - 1,
          cartItems: {
             ...this.data.cartItems,
             [_id]: cartItem - 1
           }
        });
      }
    }
  },
  onShow: function() {
    // 页面显示时更新购物车图标的 info 属性
    this.setData({
      cartCount: Object.values(this.data.cartItems).reduce(((a, b) => a + b), 0)
    });
  },
  openRemarkModal: function() {
    // 生成购物车中商品的显示格式
    const cartItemsDisplay = Object.entries(this.data.cartItems)
      .map(([id, quantity]) => {
        const item = this.data.items.find(item => item._id === id);
        return `${item.title}: ${quantity}`;
      })
      .join(' ');
    this.setData({
      cartItemsDisplay,
      isRemarkModalOpen: true
    });
  },
  closeRemarkModal: function() {
    this.setData({
      isRemarkModalOpen: false
    });
  },
  handleRemarkChange: function(e) {
    this.setData({
      remark: e.detail.value
    });
  },
  confirmRemark: function() {
    const { remark, cartItemsDisplay } = this.data;
    const db = wx.cloud.database();
  
    // 更新本地数据
    const newItems = this.data.items.map(item => {
      const cartQuantity = this.data.cartItems[item._id] || 0;
      if (cartQuantity > 0) {
        item.num -= cartQuantity;
        if (item.num === 0) {
          item.tag = '库存不足';
        } else {
          item.tag = ''; // 如果库存不为0，清除“库存不足”标签
        }
      }
      return item;
    });
  
    // 更新数据库
    Object.entries(this.data.cartItems).forEach(([id, quantity]) => {
      const item = this.data.items.find(item => item._id === id);
      if (item) {
        db.collection('inventory').doc(id).update({
          data: {
            num: item.num, // 直接使用本地计算后的 num 值
            tag: item.num === 0 ? '库存不足' : '' // 根据 num 的值设置 tag
          },
          success: () => {
            console.log('库存更新成功');
          },
          fail: err => {
            console.error('库存更新失败', err);
          }
        });
      }
    });
  
    // 清空购物车
    this.setData({
      cartItems: {},
      cartCount: 0,
      items: newItems,
      isRemarkModalOpen: false
    });
  
    // 将备注信息存储到数据库中的 beizhu 表
    db.collection('beizhu').add({
      data: {
        cartItems: cartItemsDisplay,
        remark,
        timestamp: new Date(),
        status:"未处理"
      },
      success: () => {
        console.log('备注信息存储成功');
        wx.showToast({
          title: '备注成功',
          icon: 'success'
        });
      },
      fail: err => {
        console.error('补货信息存储失败', err);
        wx.showToast({
          title: '备注失败',
          icon: 'none'
        });
      }
    });
  },
  handleAttention: function(e) {
    const _id = e.currentTarget.dataset.id;
    const db = wx.cloud.database();
    const item = this.data.items.find(item => item._id === _id);

    if (!this.data.attentionItems[_id]) {
      db.collection('attention').add({
        data: {
          title: item.title,
          timestamp: new Date()
        },
        success: () => {
          console.log('补货信息存储成功');
          wx.showToast({
            title: '已添加补货信息',
            icon: 'success'
          });
          // 更新数据库中的 hasRequestedAttention 字段
          db.collection('inventory').doc(_id).update({
            data: {
              hasRequestedAttention: true
            },
            success: () => {
              console.log('已更新补货请求状态');
              this.setData({
                attentionItems: {
                  ...this.data.attentionItems,
                  [_id]: true
                }
              });
            },
            fail: err => {
              console.error('更新补货请求状态失败', err);
            }
          });
        },
        fail: err => {
          console.error('补货信息存储失败', err);
          wx.showToast({
            title: '添加补货信息失败',
            icon: 'none'
          });
        }
      });
    } else {
      wx.showToast({
        title: '已添加过补货信息',
        icon: 'none'
      });
    }
  }
});